package com.gxa.medical.service;

import com.gxa.medical.pojo.Doctor;
import com.gxa.medical.pojo.Talk;
import com.gxa.medical.pojo.User;

import java.util.List;

/**
 * @author Dusen
 * @date 2022/6/9 14:13
 */
public interface DoctorTalkService {

    /**
     * 添加病例探讨表的方法
     * @param talk  talk表对象
     * @return  返回新增表的自增长id
     */
    Integer addTalk(Talk talk);

    /**
     * 添加参会医生id到  邀请嘉宾医生-病例探讨关联表中的方法
     * @param docId 参会医生的id
     * @param talkId    病例探讨表的id
     */
    void addInviteDoc(Integer docId,Integer talkId);



    /**
     * 添加主持人医生id到  邀请主持人医生-病例探讨关联表中的方法
     * @param docId 主持人医生的id
     * @param talkId    病例探讨表的id
     */
    void addDocTalk(Integer docId,Integer talkId);



    /**
     * 添加患者id到  邀请主持人医生-病例探讨关联表中的方法
     * @param userId 主持人医生的id
     * @param talkId    病例探讨表的id
     */
    void addUserTalk(Integer userId,Integer talkId);


    /**
     * 根据医院查询该医院所有医生的方法(显示医生的职称和名字)
     * @return 返回结果的集合
     */
    List<Doctor> selectDocAllByHos(Integer hosId);


    /**
     * 根据手机号查询该医生的方法(显示医生的职称和名字以及所属医院)
     * @param phone 该医生的手机号
     * @return  返回医生对象
     */
    Doctor selectDocAllByPhone(String phone);


    /**
     * 查询所有患者的信息  显示患者的名称,性别,年龄,发作类型,关联日期
     * @return 返回结果的集合
     */
    List<User> selectUserAll();



    /**
     * 将 报名医生的id 添加进 报名医生-talk表的关联表
     * @param docId     报名医生的id
     * @param talkId    报名的病例探讨表的id
     */
    void addSignTalk(Integer docId, Integer talkId);


    /**
     * 将talk表中的people字段 + 1
     * @param talkId    探讨表的id
     */
    void updateTalkPeople(Integer talkId);


    /**
     * 根据病例探讨表的id 查询对应的探讨表详情 显示(探讨主题,开始时间,持续时间,费用,患者名称)
     * @param  id 病例探讨表的id
     * @return 返回talk对象
     */
    Talk selectTalk(Integer id);


    /**
     * 查询所有病例探讨表
     * @return  返回结果的集合
     */
    List<Talk> selectAllTalk();

    /**
     * 查询该医生所有有参与的病例探讨表(主持人/邀请嘉宾/报名的)
     * @param docId 该医生的id
     * @return 返回结果的集合
     */
    List<Talk> selectDocTalk(Integer docId);
}
